//
//  NSDate+category.swift
//  swift-GWYWeiBo
//
//  Created by x on 2017/4/27.
//  Copyright © 2017年 HLB. All rights reserved.
//

import UIKit

extension NSDate {
                        // 星期  月份  号数 时:分:秒 时区  年
    //把一个字符串转换成NSDate  Mon Apr 24 11:15:33 +0800 2017
    
    /// 把时间字符串转换成时间
    ///
    /// - Parameter dateStr: 时间字符串
    /// - Returns: 返回NSDate类型
    class func dateWithStr(dateStr: String) -> NSDate {
        let formatter = DateFormatter()
        formatter.dateFormat = "EEE MMM dd HH:mm:ss Z yyyy" //设置时间格式
        //设置时间时区(真机必须设置 不然可能转换不成功)
        formatter.locale = NSLocale(localeIdentifier: "en") as Locale!
        //返回一个时间
        return formatter.date(from: dateStr)! as NSDate
    }
    
    /**
     刚刚(一分钟内)
     X分钟前(一小时内)
     X小时前(当天)
     昨天 HH:mm(昨天)
     MM-dd HH:mm(一年内)
     yyyy-MM-dd HH:mm(更早期)
     */
    var descDate: String {
        //1.创建一个日历类
        let calender = Calendar.current
        
        //使用日历类来来判断这个时间是否是今天  谁代用这个方法 self就是谁
        if calender.isDateInToday(self as Date) {
            //还要判断是 今天的什么时间段
            let since = Int(NSDate().timeIntervalSince(self as Date)) //距离某个时间有多长时间了(两个时间之间的时间差) 返回是秒数
            if since < 60 {
                return "刚刚"
            }else if since < 3600 {
                return "\(since/60)分钟前"
            }else {
                return "\(since/3600)小时前"
            }
            
        }
        //判断时间是够是昨天
        var formatterStr = "HH:mm"
        if calender.isDateInYesterday(self as Date) {
            //处理昨天的时间
            formatterStr = "昨天" + "HH:mm"
        }else {
            //处理一年以内的时间
            formatterStr = "MM-dd" + formatterStr
            
            //处理更早的时间
            //获取时间元素
            //let comps = calender.dateComponents(Calendar.Component.year, from: self, to: NSDate())
            
            //calender.dateComponents(<#T##components: Set<Calendar.Component>##Set<Calendar.Component>#>, from: <#T##DateComponents#>, to: <#T##DateComponents#>)
                //calender.components(_, unitFlags:NSCalendar.Unit.year,startingDate: self,resultDate: NSDate(), options:NSCalendar.Options.init(rawValue: 0))
            
            
        }
        //将指定的格式转换成字符串
        let formatter = DateFormatter()
        formatter.dateFormat = formatterStr
        formatter.locale = Locale(identifier: "en")//设置时区
        
        return formatter.string(from: self as Date)
    }
    
}
